package com.bms.client.service.impl;

import com.bms.client.pojo.KeYanRenYuan;
import com.bms.client.pojo.XiangMu;
import com.bms.client.mapper.XiangMuMapper;
import com.bms.client.vo.KongZhiKeYanZhiLiangChaXunVo;
import com.bms.client.vo.KongZhiKeYanZhiLiangGengXiShenHe;
import com.bms.client.vo.KongZhiKeYanZhiLiangGengXiYuanGong;
import com.bms.client.vo.KongZhiKeYanZhiLiangGengXinByIdVo;
import org.springframework.stereotype.Service;
import com.bms.client.service.XiangMuService;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * (XiangMu)表服务实现类
 *
 * @author hlm
 * @since 2021-03-18 11:07:37
 * @version 1.0
 */
@Service("xiangMuService")
public class XiangMuServiceImpl implements XiangMuService {
    @Resource
    private XiangMuMapper xiangMuMapper;

//    /**
//     * 根据模糊条件查询总个数
//     *
//     * @return 返回查询到的总个数
//     */
//	@Override
//    public Map<String, Object> chaXunCount(String mingCheng) {
//        Map<String, Object> map = new HashMap<>();
//        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("code", 200);
//        map.put("msg", "查询成功");
//        map.put("list", this.xiangMuMapper.chaXunCount(mingCheng));
//        return map;
//    }
//
//    /**
//     * 查询所有数据
//     * @return  返回所有数据
//     */
//	@Override
//    public Map<String, Object> chaXunAll() {
//        Map<String, Object> map = new HashMap<>();
//        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("code", 200);
//        map.put("msg", "查询成功");
//        map.put("list", this.xiangMuMapper.chaXunAll());
//        return map;
//    }
//
//    /**
//     * 通过ID查询单条数据
//     *
//     * @param id 主键
//     * @return 实例对象
//     */
//	@Override
//    public Map<String, Object> chaXunById(Integer id) {
//        Map<String, Object> map = new HashMap<>();
//        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("code", 200);
//        map.put("msg", "查询成功");
//        map.put("obj", this.xiangMuMapper.chaXunById(id));
//        return map;
//    }
//
//    /**
//     * 查询分页数据
//     *
//     * @param page 查询起始位置
//     * @param mingCheng 查询条数
//     * @return 对象列表
//     */
//	@Override
//    public Map<String, Object> chaXunFenYe(int page, String mingCheng) {
//    // 获取当前表中的总记录
//        int tableCount = this.xiangMuMapper.chaXunCount(mingCheng);
//        // 总页码计算   (总条数 - 1) / 每页显示条数  + 1
//        // (100 - 1) / 10 + 1 = 10        (101 - 1) / 10 + 1 = 11      (99 - 1) / 10 + 1 = 10
//        int pageCount = (tableCount - 1) / 10 + 1;
//        // 计算每页开始的下标值
//        int xiaBiao = (page - 1) * 10;
//        Map<String, Object> map = new HashMap<>();
//        map.put("code", 0);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("msg", "查询成功");
//        map.put("pageCount", pageCount);  // 查询的记录总页码
//        map.put("count", tableCount);     // 当前表中的总条数
//        map.put("data", this.xiangMuMapper.chaXunFenYe(xiaBiao, mingCheng));
//        return map;
//    }
//
//    /**
//     * 新增数据
//     *
//     * @param xiangMu 实例对象
//     * @return 实例对象
//     */
//	@Override
//    public Map<String, Object> xinZeng(XiangMu xiangMu) {
//        // UUID.randomUUID()  返回内容：asd21321-ewrewrew213213-123213zsad-123asdasd这样的形态
//        this.xiangMuMapper.xinZeng(xiangMu);
//        Map<String, Object> map = new HashMap<>();
//        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("msg", "新增成功");
//        return map;
//    }
//
//    /**
//     * 通过ID查询单条数据
//     *
//     * @param xiangMu 实例对象
//     * @return 实例对象
//     */
//	@Override
//    public Map<String, Object> gengXinById(XiangMu xiangMu) {
//        this.xiangMuMapper.gengXinById(xiangMu);
//        Map<String, Object> map = new HashMap<>();
//        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("msg", "更新成功");
//        return map;
//    }
//
//    /**
//     * 通过主键删除数据
//     *
//     * @param id 主键
//     * @return 是否成功
//     */
//	@Override
//    public Map<String, Object> shanChuById(String id) {
//        this.xiangMuMapper.shanChuById(id);
//        Map<String, Object> map = new HashMap<>();
//        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
//        map.put("msg", "删除成功");
//        return map;
//    }

    /**
     * 模糊查询数据
     * @return  返回所有模糊查询的数据
     */
    @Override
    public Map<String, Object> chaXun(String xiangmuming,String faburen,String zhixingzhuangtai) {
        Map<String, Object> map = new HashMap<>();
        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        KongZhiKeYanZhiLiangChaXunVo chaXunVo=new KongZhiKeYanZhiLiangChaXunVo();
        List<KeYanRenYuan> lists;
        List<KongZhiKeYanZhiLiangChaXunVo> list= xiangMuMapper.chaXun(xiangmuming,faburen,zhixingzhuangtai);
        //查出员工id，再通过id查出员工信息，再依次装入数组lists中
        for(KongZhiKeYanZhiLiangChaXunVo kongZhiKeYanZhiLiangChaXunVo:list){
            lists=new ArrayList<>();
            if(kongZhiKeYanZhiLiangChaXunVo.getKeYanRenYuanId()!=null){
                String[] keYanRenYuanId= kongZhiKeYanZhiLiangChaXunVo.getKeYanRenYuanId().split(",");
                for(String s1:keYanRenYuanId){
                    lists.add(xiangMuMapper.chaXunK(s1));
                }
            }
            System.out.println(lists);
            kongZhiKeYanZhiLiangChaXunVo.setKeYanRenYuans(lists);
        }
        map.put("code", 200);
        map.put("msg", "模糊查询成功");
        map.put("list",list);
        return map;
    }

    /**
     * 通过ID更新预定项目目标数据
     *
     * @param kongZhiKeYanZhiLiangGengXinByIdVo 实例对象
     * @return 实例对象
     */
	@Override
    public Map<String, Object> gengXinById(KongZhiKeYanZhiLiangGengXinByIdVo kongZhiKeYanZhiLiangGengXinByIdVo) {
        this.xiangMuMapper.gengXinById(kongZhiKeYanZhiLiangGengXinByIdVo);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "填写预项目目标成功");
        return map;
    }

    /**
     * 查询所有数据
     * @return  返回所有数据
     */
	@Override
    public Map<String, Object> chaXunAll() {
        Map<String, Object> map = new HashMap<>();
        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("code", 200);
        map.put("msg", "查询成功");
        map.put("list", this.xiangMuMapper.chaXunAll());
        return map;
    }

    /**
     * 通过ID更新预定项目目标数据
     *
     * @param kongZhiKeYanZhiLiangGengXiYuanGong 实例对象
     * @return 实例对象
     */
    @Override
    public Map<String, Object> gengXinYuanGong(KongZhiKeYanZhiLiangGengXiYuanGong kongZhiKeYanZhiLiangGengXiYuanGong) {
        this.xiangMuMapper.gengXinYuanGong(kongZhiKeYanZhiLiangGengXiYuanGong);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "分配员工成功");
        return map;
    }

    /**
     * 通过ID更新审核经费数据
     *
     * @param kongZhiKeYanZhiLiangGengXiShenHe 实例对象
     * @return 实例对象
     */
    @Override
    public Map<String, Object> gengXinShenHe(KongZhiKeYanZhiLiangGengXiShenHe kongZhiKeYanZhiLiangGengXiShenHe) {
        this.xiangMuMapper.gengXinShenHe(kongZhiKeYanZhiLiangGengXiShenHe);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "经费审核成功");
        return map;
    }
}